/*
 * @Description: 使用MAP作为缓存池缓存数据，防止重复请求
 * @Author: HuiSir<https://gitee.com/huisir001>
 * @Date: 2025-09-17 17:34:26
 * @LastEditTime: 2025-09-18 09:08:57
 */
export class MapCache {
  private cache: Map<string, unknown>;

  constructor() {
    this.cache = new Map();
  }

  public get(key: string): unknown {
    // 如果缓存中已经存在该键
    if (this.cache.has(key)) {
      return this.cache.get(key);
    } else {
      return null;
    }
  }

  public set(key: string, value: unknown) {
    this.cache.set(key, value);
  }

  /**
   * 清空缓存
   */
  public clear(): void {
    this.cache.clear();
  }

  /**
   * 检查缓存中是否存在指定的键
   *
   * @param key 要检查的键
   * @returns 如果缓存中存在该键，则返回 true；否则返回 false
   */
  public has(key: string): boolean {
    return this.cache.has(key);
  }

  /**
   * 从缓存中删除指定键的值。
   *
   * @param key 要删除的键
   * @returns 如果成功删除则返回 true，否则返回 false
   */
  public delete(key: string): boolean {
    return this.cache.delete(key);
  }
}

export default new MapCache();
